import {
  IsString,
  IsNotEmpty,
  IsOptional,
  IsArray,
  IsNumber,
  MaxLength,
} from 'class-validator';
import { ApiProperty, ApiPropertyOptional } from '@nestjs/swagger';

/**
 * 创建角色数据传输对象
 * 用于验证创建角色请求的数据格式
 */
export class CreateRoleDto {
  /**
   * 角色名称
   */
  @ApiProperty({
    description: '角色名称',
    example: 'admin',
    maxLength: 50,
  })
  @IsString()
  @IsNotEmpty()
  @MaxLength(50)
  name: string;

  /**
   * 角色描述
   */
  @ApiPropertyOptional({
    description: '角色描述',
    example: '系统管理员',
    maxLength: 200,
  })
  @IsOptional()
  @IsString()
  @MaxLength(200)
  description?: string;

  /**
   * 权限ID列表
   */
  @ApiPropertyOptional({
    description: '权限ID列表',
    example: [1, 2, 3],
    type: [Number],
  })
  @IsOptional()
  @IsArray()
  @IsNumber({}, { each: true })
  permissionIds?: number[];
}